<?php

/**
 * 单列(单件)模式（确保对象的唯一性）
 * 
 * 概述：确保一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。 
 * 
 * 类型：创建型模式
 * 
 * 特点：
 *  1，一个类只有一个实例
 *  2，必须自行创建这个实例
 *  3，必须自行向整个系统提供这个实例
 * 
 * 优点：
 * 1，对唯一实例的受控访问。因为单例类封装了它的唯一实例，所以它可以严格控制客户怎样以及何时访问它。
 * 2，缩小命名空间，是对对全局变量的一种改进，避免了那些存储唯一实例的全局变量污染命名空间
 * 3，允许可变数目的实例。
 * 
 * 缺点：
 * 
 * 其它：
 *  1，饿汉式单列和懒汉式单列。php没有饿汉式单列。因为PHP不支持在类定义时给类的成员变量赋予非基本类型的值。
 *  如表达式，new操作等等
 */
class Singletion
{
	/**
	 * 保存全局实例
	 */
	private static $_instance = null;
	
	/**
	 * 防止外界实例化对象
	 */
	private function __construct()
	{
		
	}
	
	/**
	 * 防止外界克隆对象
	 */
	private function __clone()
	{
		
	}
	
	/**
	 * 统一访问入口
	 */
	public static function getInstance()
	{
		if (null == self::$_instance) {
			self::$_instance = new self();
		}
		return self::$_instance;
	}
}